package com.ruoyi.system.domain;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 请假对象 leave
 * 
 * @author ruoyi
 * @date 2025-11-06
 */
public class Leave extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    private Long leaveId;

    /** 审核业务类型，取字典 */
    @Excel(name = "审核业务类型，取字典")
    private String auditBusinessType;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDatetime;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDatetime;

    /** 审核状态，取字典 */
    @Excel(name = "审核状态，取字典")
    private String auditStatus;

    /** 当前审核路径id */
    private Long currentAuditRouteId;

    public void setLeaveId(Long leaveId)
    {
        this.leaveId = leaveId;
    }

    public Long getLeaveId()
    {
        return leaveId;
    }

    public void setAuditBusinessType(String auditBusinessType) 
    {
        this.auditBusinessType = auditBusinessType;
    }

    public String getAuditBusinessType() 
    {
        return auditBusinessType;
    }

    public void setStartDatetime(Date startDatetime) 
    {
        this.startDatetime = startDatetime;
    }

    public Date getStartDatetime() 
    {
        return startDatetime;
    }

    public void setEndDatetime(Date endDatetime) 
    {
        this.endDatetime = endDatetime;
    }

    public Date getEndDatetime() 
    {
        return endDatetime;
    }

    public void setAuditStatus(String auditStatus) 
    {
        this.auditStatus = auditStatus;
    }

    public String getAuditStatus() 
    {
        return auditStatus;
    }

    public void setCurrentAuditRouteId(Long currentAuditRouteId)
    {
        this.currentAuditRouteId = currentAuditRouteId;
    }

    public Long getCurrentAuditRouteId()
    {
        return currentAuditRouteId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("leaveId", getLeaveId())
            .append("auditBusinessType", getAuditBusinessType())
            .append("startDatetime", getStartDatetime())
            .append("endDatetime", getEndDatetime())
            .append("auditStatus", getAuditStatus())
            .append("currentAuditRouteId", getCurrentAuditRouteId())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }

    @TableField(exist = false)
    private List<AuditRoute> auditInfo;

    public List<AuditRoute> getAuditInfo() {
        return auditInfo;
    }

    public void setAuditInfo(List<AuditRoute> auditInfo) {
        this.auditInfo = auditInfo;
    }

}
